/**
 * KebabCase
 * 驼峰命名转横杠命名
 */
 type KebabCase<T, Prev extends string = ''> = 
 T extends `${infer L}${infer R}` ? KebabCase<R, `${Prev}${L extends Uppercase<L> ? `-${Lowercase<L>}` : L}`> : (Prev extends `-${infer L}` ? L : Prev)
 type a1 = KebabCase<'HandleOpenFlag'>           // handle-open-flag
 type a2 = KebabCase<'OpenFlag'>                 // open-flag

 export {}